oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

oracle求同比,环比函数(LAG与LEAD)的详解

来源:网络整理  作者:  发布时间:2020-12-15 22:37
本篇文章是对oracle求同比,环比函数(LAG与LEAD)进行了详细的分析介绍,需要的朋友参考下...

SELECT EMPLOYEENO
values (1, '200804', 300);
employeeNo varchar2(20),
ORDER BY EMPLOYEENO
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
salary number
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
,LAG(SALARY, 1, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL -- 环比分析,与上个月份进行比较
) ;
,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值
values (1, '200802', 150);
CREATE TABLE salaryByMonth

Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。
values (1, '200708', 100);
FROM SALARYBYMONTH
,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较
,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary
,SALARY
commit;

yearMonth varchar2(6),
,YEARMONTH
,YEARMONTH
values (1, '200805', 500);
(

复制代码 代码如下:

values (1, '200803', 200);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)

insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)


相关热词: 详解 oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/oracle/4252.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

oracle求同比,环比函数(LAG与LEAD)的详解

2020-12-15 编辑:

SELECT EMPLOYEENO
values (1, '200804', 300);
employeeNo varchar2(20),
ORDER BY EMPLOYEENO
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
salary number
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
,LAG(SALARY, 1, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL -- 环比分析,与上个月份进行比较
) ;
,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值
values (1, '200802', 150);
CREATE TABLE salaryByMonth

Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。
values (1, '200708', 100);
FROM SALARYBYMONTH
,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较
,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary
,SALARY
commit;

yearMonth varchar2(6),
,YEARMONTH
,YEARMONTH
values (1, '200805', 500);
(

复制代码 代码如下:

values (1, '200803', 200);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)

insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)


本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/oracle/4252.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页